home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / tchrt3.zip / PCHRT.H < prev    next >
Text File  |  1990-07-23  |  9KB  |  187 lines

  1. /*---------------------------------------------------------------------------
  2.  |  PCHRT.H                                                                 |
  3.  |                                                                          |
  4.  |  Compiler independant header module for PCHRT in a C environment.        |
  5.  |                                                                          |
  6.  |  (c)1988,1989 Ryle Design, P.O. Box 22, Mt. Pleasant, Michigan 48804     |
  7.  |                                                                          |
  8.  |  V3.00  Turbo C Shareware Evaluation Version                             |
  9.  ---------------------------------------------------------------------------*/
  10.  
  11. #ifndef TRUE
  12.     #define TRUE    1
  13.     #define FALSE   0
  14. #endif
  15.  
  16. #define NUMVEC          9               /* # of BIOS interrupts we can profile  */
  17.  
  18. #define CRT10           1               /* BIOS timer bitmask switches        */
  19. #define DISK            2
  20. #define COM             4
  21. #define KEYBD           8
  22. #define PRT             16
  23. #define DOS21           32
  24. #define MOUSE           64
  25. #define EMS             128
  26. #define USER            256
  27.                                                                                                 
  28. #define INTS_ON         1               /* timer modes - default with interrupts on             */
  29. #define NO_INTS_ON      2               /* short duration with interrupts off                   */
  30. #define DEF_NUMTIMERS   10              /* default number of timers - override with t_request() */
  31.  
  32. #define CONTROL_PORT    0x43            /* 8253 control registers */
  33. #define DATA_PORT       0x40
  34.  
  35. #define HIGHWATER       0               /* timer report type specifiers */
  36. #define NONZERO         1
  37.  
  38. #define TIMERSTACK      20              /* size of BIOS timer stack     */
  39.  
  40. typedef char tname[21];                 /* timer name data type         */
  41.  
  42. typedef struct                            /* hires timestamp              */
  43. {
  44.     unsigned int    ticks;                /* 8253 838ns "ticks"           */
  45.     unsigned int    tocks;              /* BIOS TOD 54.925 ms "tocks"   */
  46. }
  47. pchrt_type;
  48.  
  49.  
  50. typedef struct
  51. {
  52.     long unsigned   entry;              /* timer entry count         */
  53.     long unsigned   elapsed;            /* timer elapsed time count  */
  54.     tname           timername;          /* timer name                */
  55.     pchrt_type      tstart;             /* timer entry timestamp     */
  56.     pchrt_type      tstop;              /* timer exit timestamp      */
  57. }
  58. pchrt_data;
  59.  
  60.  
  61. typedef struct                                  /* bios timer data structure             */
  62. {
  63.     int             which_int;                  /* interrupt vector timer               */
  64.     char            int_name[31];               /* description of interrupt functionality  */
  65.     int             enabled;                    /* interrupt timer state flag            */
  66.     unsigned char   tstack[TIMERSTACK];         /* timer stack for recursive calls         */
  67.     unsigned char   tstptr;                     /* timer stack pointer                     */
  68.     tname           func_name[256];             /* interrupt function name                 */
  69.     long unsigned   entry[256];                 /* # of activations for each timer         */
  70.     long unsigned   elapsed[256];               /* total elapsed for each timer            */
  71.     pchrt_type      bstart[256];                /* entry timestamps                        */
  72.     pchrt_type      bstop[256];                 /* exit timestamps                         */
  73. }
  74. tbios_data;
  75.  
  76.  
  77. typedef struct                                  /* data structure for delay function */
  78. {
  79.     int     inner;                              /* inner loop count */
  80.     int     outer;                              /* outer loop count */
  81. }
  82. tdelay_type;
  83.  
  84.  
  85. /*---------------------------------------------------------------------------
  86.  |                        global variable definitions                       |
  87.  ---------------------------------------------------------------------------*/
  88.  
  89. extern pchrt_data   *tdata;                      /* timer data struct       */
  90. extern tbios_data   *i10data;                    /* INT 10h timer data      */
  91. extern tbios_data   *i13data;                    /* INT 13h timer data      */
  92. extern tbios_data   *i14data;                    /* INT 14h timer data      */
  93. extern tbios_data   *i16data;                    /* INT 16h timer data      */
  94. extern tbios_data   *i17data;                    /* INT 17h timer data      */
  95. extern tbios_data   *i21data;                    /* INT 21h timer data      */
  96. extern tbios_data   *i33data;                    /* INT 33h timer data      */
  97. extern tbios_data   *i67data;                    /* INT 67h timer data      */
  98. extern tbios_data   *iuserdata;                  /* user int timer data     */
  99.  
  100. extern char         pchrt_fname[67];            /* default report file name */
  101. extern char         pchrt_title[81];            /* default report title     */
  102.  
  103. extern char         tbios_fname[67];            /* default bios report file name                            */
  104. extern char         tbios_title[81];            /* default bios report title                                */
  105. extern char         tbios_user_file[67];        /* file containing user interrupt function descriptions     */
  106.  
  107. extern char         t_timermode;                /* flag for timer mode - INTS_ON or NO_INTS_ON  */
  108. extern int          t_maxtimer;                 /* # of timers available                        */
  109. extern int          t_maxentry;                 /* timer highwater mark                         */
  110. extern int          t_report_type;              /* timer report type                            */ 
  111. extern int          tbios_user_int;             /* user specified bios interrupt timer          */
  112. extern int          tbios_mask;                 /* global bios timer mask                       */
  113. extern int          t_valid;                    /* timer data valid flag                        */
  114.  
  115. extern long unsigned    t_iohead;               /* overhead in INTS_ON mode     */
  116. extern long unsigned    t_noint_iohead;         /* overhead in NOINTS_ON mode   */
  117. extern long unsigned    tdelay_ohead;           /* t_delay calling overhead     */
  118. extern long unsigned    tdelay_inner;           /* t_delay inner loop time      */
  119. extern long unsigned    tdelay_outer;           /* t_delay outer loop time      */
  120.  
  121. extern float            tdelay_ff;              /* t_delay "fudge factor"       */
  122.  
  123.  
  124. /*---------------------------------------------------------------------------
  125.  |                            function prototypes                           |
  126.  ---------------------------------------------------------------------------*/
  127.  
  128. /* timer functions */
  129.  
  130. void          t_request(int numtimer);
  131. int           t_start(void);
  132. void          t_get(pchrt_type* timestamp);
  133. void          t_stop(void);
  134. void          t_hires_entry(pchrt_type *timestamp);
  135. void          t_hires_exit(pchrt_type *timestamp);
  136. void          t_setmode(int modetype);
  137. long unsigned t_diff(pchrt_type *start, pchrt_type *stop);
  138. void          t_calib(void);
  139. void          t_entry(int timernum);
  140. void          t_exit(int timernum);
  141. void          t_name(int timernum, char* timername);
  142. void          t_set_report(int whichkind);
  143. void          t_report(int whereto);
  144. char *        t_cvt_time(unsigned long usecs, char *time_string);
  145. void          t_fname(char *filename);
  146. void          t_rname(char *report_title);
  147. void          t_reset(int tnum);
  148. void          t_ask_timer(int tnum, long unsigned *hits, long unsigned *elapsed);
  149. void          t_suspend(int tnum);
  150. void          t_resume(int tnum);
  151.  
  152. /* bios timer functions */
  153.  
  154. int  t_bios_start(int biosmask);
  155. void t_bios_stop(void);
  156. void t_bios_suspend(int biosmask);
  157. void t_bios_resume(int biosmask);
  158. void t_bios_report(int whereto);
  159. void t_bios_ask(int whichint, int whichfunc, unsigned long *hits, unsigned long *elapsed);
  160. void t_bios_reset(int whichint, int whichfunc);
  161. void t_bios_fname(char *fname);
  162. voi